package com.itheima.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class AnnoDemo {
    public static void main(String[] args) throws IllegalAccessException, InstantiationException, InvocationTargetException {
        Class<UseTest> aClass = UseTest.class;
        UseTest useTest = aClass.newInstance();
        Method[] methods = aClass.getDeclaredMethods();
        for (Method method : methods) {
            //判断当前方法上是否有指定的注解。
            //参数：注解的字节码文件对象
            //返回值：布尔结果。  true 存在  false 不存在
            if (method.isAnnotationPresent(Test.class)) {
                method.invoke(useTest);
            }
        }
    }
}

@Retention(RetentionPolicy.RUNTIME)
@interface Test {
}

class UseTest {
    public void show() {
        System.out.println("show方法执行了");
    }

    @Test
    public void method() {
        System.out.println("method方法执行了");
    }

    @Test
    public void function() {
        System.out.println("function方法执行了");
    }
}
